// 数组指针
void ArrayPoint()
{
int nums[3][4] {{1,2,3,4},{11,12,13, 14},{15,16,17,18}};
// 二维数组一维化
// int *p = nums[0];
// std::cout << p[0] << std::endl;
// std::cout << p[4] << std::endl;
// 二维数组名是一个数组指针 数组指针是指向一个数组首地址的指针
// 括号是不可少的。少了它就变为另外一种类型了:指针数组。指针数组是数组类型,代表数组的每一个元素是指针类型
int (*pArr)[4] = nums; // 数组指针 指向数组的首地址
// 访问第一行第二列的元素
// int num = *(*(pArr + 1) + 2);
// int num = *(pArr[1] + 2);
// int num = pArr[1][2];
int num = *(*(nums + 1)+2);
std::cout << num << std::endl;
}
// 函数指针
void FunArray()
{
// 函数指针 用法
// int (*dele)(int,int) = DelegateTest;
// int num3 = (*dele)(10, 20);
// num3 = dele(40, 50);
// std::cout << num3 << std::endl;
}
void Jicheng()
{
// Pet* pet = new Dog("父类狗");
// pet->Eat();
Pet* pet = new Pet();
Dog* dog = new Dog("旺财");
// 将一个父类对象指针(或引用)cast到子类指针
pet = dynamic_cast<Dog*>(dog);
if(pet)
{
pet->Eat();
pet->Sleep();
}
Master* master = new Master("主人");
master->CallDog(*dog);
}